package com.littleHan.brushQuestions.web.frontPage.service;

import com.littleHan.brushQuestions.exception.FailedSettingException;
import com.littleHan.brushQuestions.exception.FailedToLoadException;
import com.littleHan.brushQuestions.web.start.pojo.DicValue;
import com.littleHan.brushQuestions.web.start.pojo.vo.TopicVo;
import com.littleHan.brushQuestions.web.userCenter.pojo.Announcement;

import java.util.List;

public interface FrontPageService {

    /**
     * 根据用户的喜好获取最热题目
     * @param userId 用户id
     * @return 题目列表
     * @throws FailedToLoadException
     */
    List<TopicVo> getHotTopicList(String userId) throws FailedToLoadException;

    /**
     * 根据用户的喜好获取最新题目
     * @param userId 用户id
     * @return 题目列表
     * @throws FailedToLoadException
     */
    List<TopicVo> getNewTopicList(String userId)throws FailedToLoadException;

    /**
     * 根据用户id获取用户的兴趣列表
     * @param userId 用户id
     * @return 返回数据字典值中兴趣的列表
     */
    List<DicValue> getInterestingSpecificInfoByUserId(String userId) throws FailedToLoadException;

    /**
     * 获取所有科目列表
     * @return 返回数据字典值中科目的列表
     * @throws FailedToLoadException
     */
    List<DicValue> getAllObject() throws FailedToLoadException;

    /**
     * 用户设置兴趣(添加/删除)
     * @param list 用户兴趣列表
     * @param userId 用户id
     */
    void setInterestingByUser(List<DicValue> list, String userId) throws FailedSettingException;

    /**
     * 获取公告信息
     * @return
     */
    List<Announcement> getAnnouncementList();
}
